package paim.gh.testes;

import org.hibernate.FlushMode;
import org.hibernate.Session;

import paim.wingchun.app.Hibernates;
import paim.wingchun.app.HyperSQLs;
import paim.wingchun.app.WC_Properties;

import paim.gh.model.DiasSemana;
import paim.gh.model.pojos.*;

@SuppressWarnings({ "unused", "deprecation" })
public class HibernateTeste {
    @Deprecated
    public static final String bancoPadrao = "ghdb";

    @Deprecated
    public static final String usuarioPadrao = "sa";

    @Deprecated
    public static final String senha = "";
    private Session sessao;

    public static void main(String[] args) {
        try {
            WC_Properties.verificaPropertiesApp();

            /* simplismente inicializa constantes dependentes das propriedades da aplicacao */
            //new Constantes();

            Grade grade = new Grade();
            grade.setNome("grade1");
            grade.setSigla("gr1");

            Horario horario = new Horario();
            Disciplina disciplina = new Disciplina();
            disciplina.setDescricao("descricao descricao descricao....");
            disciplina.setNome("nome disciplina nome nome nome");
            disciplina.setSigla("sigla sigla sigla");
            Curso curso = new Curso();
            Turno turno = new Turno();
            Semestre semestre = new Semestre();
            Dia dia = new Dia();
            dia.setDiaSemana(DiasSemana.SEGUNDA);

            Turma turma = new Turma();
            // aula.setGrade(grade);
            // aula.setNome("teste hibernate 3");
            // aula.setSigla("au");
            // aula.setHorario(periodo);
            // aula.setDisciplina(disciplina);
            // aula.setCurso(curso);
            // aula.setTurno(turno);
            // aula.setSemestre(semestre);
            // aula.setDiaSemana(diaSemana);

            try {
                // HSQLDBUtil.iniciaHSQLDB();
                HyperSQLs.start(true, HibernateTeste.bancoPadrao, HibernateTeste.usuarioPadrao, HibernateTeste.senha);

            }
            catch ( Throwable e ) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            /* se jï¿½ estï¿½ em execuï¿½ï¿½o, dï¿½ erro */
            if ( !HyperSQLs.isOnline() ) {
                return;
            }

            // new HibernateUtil();
            new Hibernates(HibernateTeste.bancoPadrao, HibernateTeste.usuarioPadrao, HibernateTeste.senha);

            Session session = Hibernates.openSession();

            session.setFlushMode(FlushMode.COMMIT);
            session.beginTransaction();

            session.save(horario);
            session.save(disciplina);
            session.save(curso);
            session.save(turno);
            session.save(semestre);
            session.save(dia);

            session.save(grade);
            // session.save(aula);
            session.getTransaction().commit();

            System.out.println("Gravado contato: " + turma.getId());

            if ( HyperSQLs.isOnline() ) {
                HyperSQLs.shutdown();
            }
            System.exit(0);

        }
        catch ( Exception e ) {
            e.printStackTrace();
        }
    }
}
